This explores potential numeric cutoff of central signs in the diagnosis of central dysfunction. Data obtained from 07182017 Data Request was utilized for this analysis.

Demographic Information

Total Patients: 773
Time in Service: 18.06 ± 6.56
Average Patient Age: 38.77 ± 6.57

Patient Age Labeled:


Age_lbl N Percent
20 to 24 13 1.68
25 to 29 65 8.41
30 to 34 119 15.39
35 to 39 197 25.49
40 to 44 237 30.66
45 to 49 106 13.71
50 to 54 30 3.88
55 to 60 6 0.78

Gender Counts:


Gender N Percent
M 761 98.45
F 12 1.55

Service Counts:


Service N Percent
Navy 465 60.16
Army 193 24.97
Marines 63 8.15
Air Force 51 6.60
Coast Guard 1 0.13

Patient Complaints

  The details of complaints are listed below. Total number of patients who exhibited each complaint as well as the percentage of patients with said complaint.

Average Number of Patient Symptoms: 2.77 ± 1.32
Symptoms N Perc
Syncope_pre_syncope 581 75.16
Motion_Sensitivity 551 71.28
Vertigo_Spinning 496 64.17
Disequilibrium_imbalance 316 40.88
Dizziness_lightheadedness 199 25.74

Central Counts


Average Central Counts: 2.2 ± 1.99
Median Central Counts: 2
Total Number of Central Tests: ~17

 

Total_C N CumN Perc CumPerc
13 1 1 0.14 0.14
11 1 2 0.14 0.28
9 3 5 0.41 0.69
8 4 9 0.55 1.24
7 14 23 1.93 3.17
6 26 49 3.58 6.75
5 53 102 7.29 14.04
4 67 169 9.22 23.26
3 97 266 13.34 36.60
2 145 411 19.94 56.54
1 150 561 20.63 77.17
0 166 727 22.83 100.00

Central Signs

  Below outlines the total number of patients with central findings per assessment. The percent is the percentage of patients who exhibited a central sign for that test.

Test Sum Perc
Oculomotor_Smooth_Pursuit_Vertical 481 62.23
Oculomotor_Smooth_Pursuit_Horizontal 201 26.00
Oculomotor_Saccades_Vertical 189 24.45
VNGTest_DixHallpike_Head_Right 127 16.43
VNGTest_DixHallpike_Head_Left 121 15.65
VNGTest_Roll_Test_Lateral_Left 119 15.39
VNGTest_Roll_Test_Lateral_Right 106 13.71
Oculomotor_Gaze_Right 79 10.22
Oculomotor_Gaze_Left 79 10.22
Oculomotor_Saccades_Horizontal 75 9.70
Oculomotor_Gaze_Up 44 5.69
Oculomotor_Gaze_Center 31 4.01
Oculomotor_Gaze_Down 29 3.75
Oculomotor_Optokinetic 23 2.98
VNGTest_Horizontal_Head_Shake 20 2.59
Oculomotor_Spontaneous_Nystagmus 18 2.33
Positioning_supine_Gaze_up 7 0.91
Positioning_supine_Gaze_Center 1 0.13
VNGTest_Roll_Test_Body_Right 1 0.13

Variable Exploration

  Below are scatterplots which compare the various variables of interest. While it is interesting to see correlations among the variables, which is most significant is how these variables respond to the changes in Total_C (Total Central Signs). From here onward, we will try to use extraneous variables to compare variances within the data.

Demographics Against Total Central

  Scatterplot displaying relationships among Injury and other demographics against Total_C.

Surveys Against Total Central

  Below displays the scatterplots of the various surveys against the total number of central signs. Also, should be noted the distribution of the tests within the diagonal.

Individual Survey Questions

&nbs; P, Fu, and E come from the DHI subscales - Physical, Funcional, and Emotional.

Changes in Means per Cutoffs

  We will compare the mean differences of surveys among our sample population with various cutoffs for Central Dysfunction. The values calculated below are ‘Normal Patient Means’ - ‘Central Patient Means’. Dependent upon the survey, a (-) mean difference signifies that Central Patients performed worse on that particular survey.

Surveys

Addtl Surveys

Specific Survey Questions

Variable Significance Testing

Variance Comparison

  Once we have determined the suggested cutoff for our grouping, we will examine the structure of the variables when comparing these two groups. Variance comparisons has been commented out. We’ll first explore other methods of explaining variance.

Regression Exploration

  Utilizing a regression, we can evaluate which variables contribute most to the variance exhibited within the total number of Central Signs. After scaling the variables, it appears that SOT and NSI explain much of the variance within Total Central signs. Additional exploration will be conducted on these variables, as well as the DHI, ABC and FGA; surveys/questionnaires which hope to provide insight into the varability exhibited in the total number of central signs.

## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## Total_C ~ ABC_Tot_Score + NSI_Tot_Score + PCLM_Tot_Score + PHQ9_Tot_Score + 
##     GAD7_Tot_Score + DHI_Tot_Score + FGA + SOT + LOC + AOC + 
##     PTA + TimeInService + symp_tot
## 
## Final Model:
## Total_C ~ NSI_Tot_Score + SOT + LOC
## 
## 
##                Step Df    Deviance Resid. Df Resid. Dev      AIC
## 1                                        388   1566.535 574.7882
## 2   - TimeInService  1 0.005593749       389   1566.541 572.7896
## 3        - symp_tot  1 0.016116442       390   1566.557 570.7937
## 4             - PTA  1 0.016457677       391   1566.573 568.7980
## 5  - GAD7_Tot_Score  1 0.084472498       392   1566.658 566.8196
## 6   - ABC_Tot_Score  1 0.226958741       393   1566.885 564.8779
## 7   - DHI_Tot_Score  1 0.384807372       394   1567.270 562.9766
## 8  - PHQ9_Tot_Score  1 0.421707855       395   1567.691 561.0847
## 9             - FGA  1 1.144260691       396   1568.836 559.3781
## 10 - PCLM_Tot_Score  1 1.792745080       397   1570.628 557.8372
## 11            - AOC  1 3.301717655       398   1573.930 556.6813
##  ABC_Tot_Score  NSI_Tot_Score PCLM_Tot_Score PHQ9_Tot_Score GAD7_Tot_Score 
##    0.024483469    0.168838268    0.037156365    0.033910237    0.036591131 
##  DHI_Tot_Score            FGA            SOT            LOC            AOC 
##    0.073580260    0.021804517    0.402576546    0.109360283    0.053152423 
##            PTA  TimeInService       symp_tot 
##    0.002019941    0.001658376    0.034868185
## Stepwise Model Path 
## Analysis of Deviance Table
## 
## Initial Model:
## Total_C ~ NSI_Q1 + NSI_Q2 + NSI_Q3 + NSI_Q4 + NSI_Q5 + NSI_Q6 + 
##     P + Fu + E + ABC_Tot_Score + FGA + SOT + LOC + AOC + PTA + 
##     TimeInService + symp_tot
## 
## Final Model:
## Total_C ~ NSI_Q2 + NSI_Q4 + SOT + LOC
## 
## 
##               Step Df     Deviance Resid. Df Resid. Dev         AIC
## 1                                        384   370.5556   3.2576552
## 2              - P  1 0.0005381039       385   370.5561   1.2582389
## 3            - FGA  1 0.0292055594       386   370.5853  -0.7100785
## 4            - PTA  1 0.0603872285       387   370.6457  -2.6445775
## 5  - ABC_Tot_Score  1 0.0647257805       388   370.7104  -4.5743825
## 6         - NSI_Q5  1 0.0771930306       389   370.7876  -6.4906828
## 7         - NSI_Q1  1 0.1037187957       390   370.8914  -8.3782488
## 8  - TimeInService  1 0.1376576045       391   371.0290 -10.2290728
## 9              - E  1 0.1885390153       392   371.2176 -12.0248477
## 10      - symp_tot  1 0.2056724204       393   371.4232 -13.8021820
## 11        - NSI_Q3  1 1.1334664724       394   372.5567 -14.5772729
## 12           - AOC  1 1.1448801418       395   373.7016 -15.3438067
## 13        - NSI_Q6  1 1.5097879933       396   375.2114 -15.7229625
## 14            - Fu  1 1.3377991326       397   376.5492 -16.2921988
##        NSI_Q1        NSI_Q2        NSI_Q3        NSI_Q4        NSI_Q5 
##   0.023822977   0.088451980   0.030713574   0.203542379   0.027585913 
##        NSI_Q6             P            Fu             E ABC_Tot_Score 
##   0.040874449   0.022034570   0.053786262   0.028049691   0.021034321 
##           FGA           SOT           LOC           AOC           PTA 
##   0.015146876   0.304955479   0.074816519   0.037148007   0.001848635 
## TimeInService      symp_tot 
##   0.002855504   0.023332863

Logistic Regression

  As shown in the previous tab, SOT, LOC, and NSI might explain some of the variance noticed within the Total C variable. We will reverse the analysis and look at the various groupings of Total C and compare their responses to these variables. Suggestive cutoff point would utilize 4 Total Central signs. Given the predictor variables: NSI Total Score (NSI Q2, NSI Q3), LOC, and SOT.

aov_data<-dhi%>%
  select('NSI_Q1','NSI_Q2','NSI_Q3','NSI_Q4','NSI_Q5','P','Fu','E','Total_C','NSI_Q6','ABC_Tot_Score','NSI_Tot_Score','PCLM_Tot_Score','PHQ9_Tot_Score','GAD7_Tot_Score','DHI_Tot_Score','FGA','SOT','LOC','AOC','PTA','TimeInService','symp_tot','Total_C','Age','Age_lbl')%>%
  filter(complete.cases(.))

auc<-NULL
for (i in 1:9){
  Cutoff<-paste0(quo_name(i),"")
  aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
  logic_fit<-glm(I~ABC_Tot_Score+NSI_Tot_Score+PCLM_Tot_Score+PHQ9_Tot_Score+GAD7_Tot_Score+DHI_Tot_Score+FGA+SOT+LOC+AOC+PTA+TimeInService+symp_tot,data=aov_data,family="binomial")
  prob<-predict(logic_fit,type=c("response"))
  aov_data$prob=prob
  g<-pROC::roc(I~prob,data=aov_data)
  #plot(g)
  a<-cbind(Cutoff,round(g$auc,4))
  auc<-rbind(auc,a)
}

#Full Model
print(auc)
##       Cutoff         
##  [1,] "1"    "0.6802"
##  [2,] "2"    "0.6478"
##  [3,] "3"    "0.6285"
##  [4,] "4"    "0.6406"
##  [5,] "5"    "0.6218"
##  [6,] "6"    "0.6582"
##  [7,] "7"    "0.7427"
##  [8,] "8"    "0.9449"
##  [9,] "9"    "0.938"
auc<-NULL
for (i in 1:9){
  Cutoff<-paste0(quo_name(i),"")
  aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
  logic_fit<-glm(I~SOT+NSI_Tot_Score+LOC,data=aov_data,family="binomial")
  prob<-predict(logic_fit,type=c("response"))
  aov_data$prob=prob
  g<-pROC::roc(I~prob,data=aov_data)
  #plot(g)
  a<-cbind(Cutoff,round(g$auc,4))
  auc<-rbind(auc,a)
}

#Model:TOTAL_CENTRAL~SOT+NSI_Tot_Score+LOC
print(auc)
##       Cutoff         
##  [1,] "1"    "0.6432"
##  [2,] "2"    "0.6312"
##  [3,] "3"    "0.5996"
##  [4,] "4"    "0.6224"
##  [5,] "5"    "0.6078"
##  [6,] "6"    "0.6249"
##  [7,] "7"    "0.6798"
##  [8,] "8"    "0.7475"
##  [9,] "9"    "0.7672"
auc<-NULL
for (i in 1:9){
  Cutoff<-paste0(quo_name(i),"")
  aov_data$I<-ifelse(aov_data$Total_C>=i,1,0)
  logic_fit<-glm(I~SOT+NSI_Q2+NSI_Q4+LOC,data=aov_data,family="binomial")
  prob<-predict(logic_fit,type=c("response"))
  aov_data$prob=prob
  g<-pROC::roc(I~prob,data=aov_data)
  #plot(g)
  a<-cbind(Cutoff,round(g$auc,4))
  auc<-rbind(auc,a)
}

#Model:TOTAL_CENTRAL~SOT+NSI_Q2+NSI_Q4+LOC
print(auc)
##       Cutoff         
##  [1,] "1"    "0.6461"
##  [2,] "2"    "0.65"  
##  [3,] "3"    "0.6091"
##  [4,] "4"    "0.6464"
##  [5,] "5"    "0.6333"
##  [6,] "6"    "0.6574"
##  [7,] "7"    "0.7014"
##  [8,] "8"    "0.7591"
##  [9,] "9"    "0.7781"

AoV Testing

  We will now compare variable response between the various cutoffs of Central Dysfunction. P-values are provided which result from the MANOVA testing.

aov_list<-NULL
for (i in 1:9){
  aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
  name<-paste0(quo_name(i),"")
  i<-round(summary(manova(cbind(ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot)~I,data=aov_data))$stats[11],5)
  test<-cbind(name,i)
  aov_list<-rbind(aov_list,test)}

#Model: ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot~TOTAL_CENTRAL
print(aov_list) 
##       name i        
##  [1,] "1"  "0.07359"
##  [2,] "2"  "0.07373"
##  [3,] "3"  "0.15751"
##  [4,] "4"  "0.10962"
##  [5,] "5"  "0.60369"
##  [6,] "6"  "0.66679"
##  [7,] "7"  "0.46911"
##  [8,] "8"  "0.01088"
##  [9,] "9"  "0.00122"
# 
# for (i in 1:9){
#   aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
#   name<-paste0(quo_name(i),"")
#   i<-summary(manova(cbind(ABC_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,GAD7_Tot_Score,DHI_Tot_Score,FGA,SOT,LOC,AOC,PTA,symp_tot)~I+Age,data=aov_data))
#   print(i)
# }

aov_list<-NULL
for (i in 1:9) {
  aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
  name<-paste0(quo_name(i),"")
  i<-round(summary(manova(cbind(NSI_Tot_Score,SOT,LOC)~I,data=aov_data))$stats[11],5)
  test<-cbind(name,i)
  aov_list<-rbind(aov_list,test) }
#Model: NSI_Tot_Score+SOT+LOC~TOTAL_CENTRAL
print(aov_list) 
##       name i        
##  [1,] "1"  "0.00541"
##  [2,] "2"  "0.00078"
##  [3,] "3"  "0.00777"
##  [4,] "4"  "0.00265"
##  [5,] "5"  "0.15878"
##  [6,] "6"  "0.13028"
##  [7,] "7"  "0.10001"
##  [8,] "8"  "0.01992"
##  [9,] "9"  "0.00749"
aov_list<-NULL
for (i in 1:9) {
  aov_data$I<-ifelse(aov_data$Total_C>=i,"1","0")
  name<-paste0(quo_name(i),"")
  i<-round(summary(manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=aov_data))$stats[11],5)
  test<-cbind(name,i)
  aov_list<-rbind(aov_list,test) }

#Model: NSI_Q2+NSI_Q4+SOT+LOC~TOTAL_CENTRAL
print(aov_list) 
##       name i        
##  [1,] "1"  "0.00912"
##  [2,] "2"  "0.00021"
##  [3,] "3"  "0.00719"
##  [4,] "4"  "0.00055"
##  [5,] "5"  "0.01332"
##  [6,] "6"  "0.03955"
##  [7,] "7"  "0.14276"
##  [8,] "8"  "0.01242"
##  [9,] "9"  "0.00865"

Cutoffs and Specific Vestib Tests

  We will explore the population makes up utilizing two cutoff scores, 4 and 5. We will compare their mean responses on our dataset.

Cutoff of 3

dhi$I<-ifelse(dhi$Total_C>=3,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]

dm<-dem%>%
  filter(!is.na(I))%>%
  select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
  group_by(I)%>%
  summarise_all(means)
kable(dm)
I Age TimeInService symp_tot LOC AOC PTA
0 38.69848 17.87603 2.880694 1.275463 2.310905 0.3076923
1 38.72932 18.13346 2.590226 1.421875 2.346614 0.3307087
ss<-scores%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(means)
kable(ss)
I SOT FGA ABC_Tot_Score DHI_Tot_Score GAD7_Tot_Score NSI_Tot_Score NSI_Q2 NSI_Q3 NSI_Q4 NSI_Q5 NSI_Q6 PCLM_Tot_Score PHQ9_Tot_Score P Fu E
0 83.37602 27.95710 87.27930 15.14094 10.33828 34.58590 0.9139073 0.9336283 1.863436 0.5077263 1.245575 45.81319 10.85126 5.463127 4.287390 4.645161
1 82.08511 27.38158 85.36648 20.98851 11.10455 39.23485 1.0492424 1.1787072 2.136364 0.6488550 1.382576 47.90152 11.89844 6.482143 5.866071 6.160714
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))

vt<-vestib%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(funs(sum(.=="C",na.rm=TRUE)))

vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")

kable(vt)
variable 0 1
Spontaneous_Nystagmus NA 0.077
Smooth_Pursuit_Vertical 0.405 1.381
Smooth_Pursuit_Horizontal 0.116 0.792
Saccades_Vertical 0.077 0.827
Saccades_Horizontal 0.023 0.363
Optokinetic 0.009 0.101
Gaze_Center 0.002 0.161
Gaze_Right 0.029 0.339
Gaze_Left 0.029 0.345
Gaze_Up 0.005 0.220
Gaze_Down 0.004 0.137
supine_Gaze_up 0.002 0.036
supine_Gaze_Center NA 0.006
Vestibular_VNGTest_DixHallpike_Head_Right 0.034 0.631
Vestibular_VNGTest_DixHallpike_Head_Left 0.030 0.619
Vestibular_VNGTest_Horizontal_Head_Shake 0.014 0.071
Vestibular_VNGTest_Roll_Test_Lateral_Left 0.023 0.631
Vestibular_VNGTest_Roll_Test_Lateral_Right 0.014 0.571
Spon_Gaze 0.002 0.161
GazeRL 0.029 0.321
GazeR NA 0.018
GazeL NA 0.024
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score, NSI_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P, Fu)~I,data=scores)
summary(mnv)
##            Df   Pillai approx F num Df den Df Pr(>F)
## I           1 0.038502   1.0892     15    408 0.3642
## Residuals 422
summary.aov(mnv)
##  Response SOT :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    50.6  50.609  1.7142 0.1912
## Residuals   422 12458.9  29.523               
## 
##  Response FGA :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    4.52  4.5215  1.1791 0.2782
## Residuals   422 1618.19  3.8346               
## 
##  Response ABC_Tot_Score :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1    852  851.72  3.3185 0.06921 .
## Residuals   422 108311  256.66                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response DHI_Tot_Score :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1    940  939.71  2.4892 0.1154
## Residuals   422 159313  377.52               
## 
##  Response GAD7_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    45.3  45.341  1.3356 0.2485
## Residuals   422 14326.0  33.948               
## 
##  Response NSI_Tot_Score :
##              Df Sum Sq Mean Sq F value   Pr(>F)   
## I             1   1939 1938.50  7.6327 0.005983 **
## Residuals   422 107177  253.97                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q2 :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   0.679 0.67910  0.9789  0.323
## Residuals   422 292.755 0.69373               
## 
##  Response NSI_Q3 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   2.21 2.20758  2.6868 0.1019
## Residuals   422 346.73 0.82164               
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value   Pr(>F)   
## I             1   8.47  8.4697   6.991 0.008497 **
## Residuals   422 511.26  1.2115                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q5 :
##              Df  Sum Sq Mean Sq F value Pr(>F)  
## I             1   2.613 2.61251  3.7843 0.0524 .
## Residuals   422 291.329 0.69035                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q6 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   1.74  1.7441  1.6592 0.1984
## Residuals   422 443.60  1.0512               
## 
##  Response PCLM_Tot_Score :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1    592  591.93  2.1484 0.1435
## Residuals   422 116272  275.53               
## 
##  Response PHQ9_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    35.1  35.084  0.9351 0.3341
## Residuals   422 15833.3  37.520               
## 
##  Response P :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1    98.8  98.757  2.8185 0.09393 .
## Residuals   422 14786.6  35.039                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response Fu :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   133.3 133.328  2.4747 0.1164
## Residuals   422 22736.2  53.877               
## 
## 473 observations deleted due to missingness
mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)
##            Df   Pillai approx F num Df den Df   Pr(>F)   
## I           1 0.030292   4.4436      4    569 0.001522 **
## Residuals 572                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)
##  Response NSI_Q2 :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   2.28 2.28071  2.8721 0.09067 .
## Residuals   572 454.22 0.79408                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value    Pr(>F)    
## I             1  14.11 14.1103  10.951 0.0009942 ***
## Residuals   572 736.99  1.2884                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response SOT :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1   251.5 251.522  6.2016 0.01305 *
## Residuals   572 23199.1  40.558                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response LOC :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1    4.87  4.8695  2.7731 0.09641 .
## Residuals   572 1004.41  1.7560                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 323 observations deleted due to missingness

Cutoff of 4

dhi$I<-ifelse(dhi$Total_C>=4,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]

dm<-dem%>%
  filter(!is.na(I))%>%
  select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
  group_by(I)%>%
  summarise_all(means)
kable(dm)
I Age TimeInService symp_tot LOC AOC PTA
0 38.62545 17.87697 2.827957 1.283270 2.317400 0.3231358
1 38.98817 18.27811 2.597633 1.481481 2.345912 0.2937500
ss<-scores%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(means)
kable(ss)
I SOT FGA ABC_Tot_Score DHI_Tot_Score GAD7_Tot_Score NSI_Tot_Score NSI_Q2 NSI_Q3 NSI_Q4 NSI_Q5 NSI_Q6 PCLM_Tot_Score PHQ9_Tot_Score P Fu E
0 83.23400 27.86623 87.13705 15.87061 10.41687 35.18693 0.9418182 0.9799636 1.898367 0.5400000 1.276867 45.94203 10.92264 5.694511 4.394299 4.741093
1 81.77181 27.33793 84.73151 21.91617 11.29577 39.95210 1.0359281 1.1686747 2.179641 0.6242424 1.359281 48.68862 12.26380 6.375000 6.430556 6.722222
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))

vt<-vestib%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(funs(sum(.=="C",na.rm=TRUE)))

vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")
vt$delta<-vt$`0`-vt$`1`

kable(vt)
variable 0 1 delta
Spontaneous_Nystagmus 0.002 0.071 -0.069
Smooth_Pursuit_Vertical 0.554 0.887 -0.333
Smooth_Pursuit_Horizontal 0.190 0.548 -0.358
Saccades_Vertical 0.167 0.530 -0.363
Saccades_Horizontal 0.048 0.280 -0.232
Optokinetic 0.013 0.089 -0.076
Gaze_Center 0.004 0.155 -0.151
Gaze_Right 0.052 0.262 -0.210
Gaze_Left 0.052 0.268 -0.216
Gaze_Up 0.011 0.202 -0.191
Gaze_Down 0.005 0.131 -0.126
supine_Gaze_up 0.005 0.024 -0.019
supine_Gaze_Center NA 0.006 NA
Vestibular_VNGTest_DixHallpike_Head_Right 0.072 0.506 -0.434
Vestibular_VNGTest_DixHallpike_Head_Left 0.073 0.476 -0.403
Vestibular_VNGTest_Horizontal_Head_Shake 0.023 0.042 -0.019
Vestibular_VNGTest_Roll_Test_Lateral_Left 0.054 0.530 -0.476
Vestibular_VNGTest_Roll_Test_Lateral_Right 0.039 0.488 -0.449
Spon_Gaze 0.004 0.155 -0.151
GazeRL 0.052 0.244 -0.192
GazeR NA 0.018 NA
GazeL NA 0.024 NA
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P,Fu)~I,data=scores)
summary(mnv)
##            Df   Pillai approx F num Df den Df  Pr(>F)  
## I           1 0.050865   1.5656     14    409 0.08582 .
## Residuals 422                                          
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)
##  Response SOT :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1   104.2 104.159  3.5433 0.06048 .
## Residuals   422 12405.3  29.396                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response FGA :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    5.77  5.7664  1.5049 0.2206
## Residuals   422 1616.95  3.8316               
## 
##  Response ABC_Tot_Score :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   1228 1227.57  4.7995 0.02901 *
## Residuals   422 107936  255.77                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response DHI_Tot_Score :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   2030 2030.43  5.4154 0.02043 *
## Residuals   422 158222  374.93                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response GAD7_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    78.5  78.527  2.3185 0.1286
## Residuals   422 14292.8  33.869               
## 
##  Response NSI_Q2 :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   0.952 0.95235  1.3741 0.2418
## Residuals   422 292.482 0.69308               
## 
##  Response NSI_Q3 :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   3.19  3.1921   3.896 0.04905 *
## Residuals   422 345.75  0.8193                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value    Pr(>F)    
## I             1  13.71 13.7130  11.436 0.0007874 ***
## Residuals   422 506.01  1.1991                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q5 :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1   2.061 2.06137  2.9803 0.08501 .
## Residuals   422 291.880 0.69166                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q6 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   0.31 0.30794   0.292 0.5892
## Residuals   422 445.04 1.05460               
## 
##  Response PCLM_Tot_Score :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1    580  579.61  2.1034 0.1477
## Residuals   422 116284  275.55               
## 
##  Response PHQ9_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    96.5  96.537   2.583 0.1088
## Residuals   422 15771.9  37.374               
## 
##  Response P :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1     70  69.975  1.9932 0.1587
## Residuals   422  14815  35.108               
## 
##  Response Fu :
##              Df  Sum Sq Mean Sq F value  Pr(>F)   
## I             1   394.1  394.15  7.4006 0.00679 **
## Residuals   422 22475.4   53.26                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 473 observations deleted due to missingness
mnv<-manova(cbind(SOT,FGA,ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score,NSI_Tot_Score,PCLM_Tot_Score,PHQ9_Tot_Score,P,Fu)~I,data=scores)
#summary(mnv)
#summary.aov(mnv)

mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)
##            Df   Pillai approx F num Df den Df   Pr(>F)   
## I           1 0.030837   4.5262      4    569 0.001318 **
## Residuals 572                                            
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary.aov(mnv)
##  Response NSI_Q2 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   1.63 1.63218  2.0525 0.1525
## Residuals   572 454.86 0.79522               
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value   Pr(>F)   
## I             1  13.65 13.6520  10.589 0.001205 **
## Residuals   572 737.45  1.2892                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response SOT :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1   265.1 265.072  6.5395 0.01081 *
## Residuals   572 23185.5  40.534                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response LOC :
##              Df  Sum Sq Mean Sq F value  Pr(>F)  
## I             1    4.93  4.9336  2.8098 0.09423 .
## Residuals   572 1004.34  1.7558                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 323 observations deleted due to missingness

Cutoff of 5

dhi$I<-ifelse(dhi$Total_C>=5,"1","0")
vestib<-dhi[,c(2:34,205)]
scores<-dhi[,c(38,40,68,72,83,109,88,89,90,91,92,144,163,202:205)]
dem<-dhi[,c(164:171,41:48,205)]

dm<-dem%>%
  filter(!is.na(I))%>%
  select(-c(Gender,Service,Special_stat,TypeParticipant,Motion_Sensitivity_Present:Syncope_pre_syncope_Present,Age_lbl))%>%
  group_by(I)%>%
  summarise_all(means)
kable(dm)
I Age TimeInService symp_tot LOC AOC PTA
0 38.83040 18.08696 2.793600 1.313559 2.281570 0.3191126
1 37.97059 17.25490 2.656863 1.428571 2.583333 0.2989691
ss<-scores%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(means)
kable(ss)
I SOT FGA ABC_Tot_Score DHI_Tot_Score GAD7_Tot_Score NSI_Tot_Score NSI_Q2 NSI_Q3 NSI_Q4 NSI_Q5 NSI_Q6 PCLM_Tot_Score PHQ9_Tot_Score P Fu E
0 82.99031 27.74612 86.84963 16.82372 10.45513 35.87034 0.9642857 1.011382 1.935170 0.5593496 1.279675 46.30097 11.07576 5.771670 4.682105 5.002105
1 82.16279 27.69412 84.81039 20.13861 11.61798 38.89109 0.9603960 1.100000 2.138614 0.5600000 1.396040 48.28713 12.21212 6.377778 6.133333 6.533333
colnames(vestib)<-sub("Vestibular_Oculomotor_","",colnames(vestib))
colnames(vestib)<-sub("Vestibular_Positioning_","",colnames(vestib))
colnames(vestib)<-sub("_Abnormal","",colnames(vestib))

vt<-vestib%>%
  filter(!is.na(I))%>%
  group_by(I)%>%
  summarise_all(funs(sum(.=="C",na.rm=TRUE)))

vt<-melt(vt)
vt$value<-as.numeric(vt$value)
vt$Mean<-ifelse(vt$I=="1",round(vt$value/168,3),round(vt$value/558,3))
vt<-vt%>%filter(!value==0)%>%arrange(-Mean)
vt<-dcast(vt,variable~I,value.var = "Mean")

kable(vt)
variable 0 1
Spontaneous_Nystagmus 0.004 0.065
Smooth_Pursuit_Vertical 0.654 0.554
Smooth_Pursuit_Horizontal 0.254 0.333
Saccades_Vertical 0.222 0.345
Saccades_Horizontal 0.081 0.173
Optokinetic 0.022 0.060
Gaze_Center 0.011 0.131
Gaze_Right 0.070 0.202
Gaze_Left 0.072 0.202
Gaze_Up 0.022 0.167
Gaze_Down 0.011 0.113
supine_Gaze_up 0.005 0.024
supine_Gaze_Center NA 0.006
Vestibular_VNGTest_DixHallpike_Head_Right 0.120 0.345
Vestibular_VNGTest_DixHallpike_Head_Left 0.116 0.333
Vestibular_VNGTest_Horizontal_Head_Shake 0.025 0.036
Vestibular_VNGTest_Roll_Test_Lateral_Left 0.099 0.381
Vestibular_VNGTest_Roll_Test_Lateral_Right 0.077 0.363
Spon_Gaze 0.011 0.131
GazeRL 0.070 0.185
GazeR NA 0.018
GazeL 0.002 0.018
mnv<-manova(cbind(SOT,FGA, ABC_Tot_Score,DHI_Tot_Score,GAD7_Tot_Score, NSI_Tot_Score,NSI_Q2, NSI_Q3, NSI_Q4,NSI_Q5,NSI_Q6, PCLM_Tot_Score, PHQ9_Tot_Score, P, Fu)~I,data=scores)
summary(mnv)
##            Df   Pillai approx F num Df den Df Pr(>F)
## I           1 0.042957   1.2209     15    408 0.2524
## Residuals 422
summary.aov(mnv)
##  Response SOT :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    66.9  66.889  2.2686 0.1328
## Residuals   422 12442.6  29.485               
## 
##  Response FGA :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    0.14  0.1357  0.0353 0.8511
## Residuals   422 1622.58  3.8450               
## 
##  Response ABC_Tot_Score :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   1122 1121.84  4.3818 0.03692 *
## Residuals   422 108041  256.02                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response DHI_Tot_Score :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1    765  764.98  2.0241 0.1556
## Residuals   422 159487  377.93               
## 
##  Response GAD7_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)  
## I             1    96.9  96.890  2.8644 0.0913 .
## Residuals   422 14274.5  33.826                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Tot_Score :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1    725  724.97  2.8226 0.09369 .
## Residuals   422 108390  256.85                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q2 :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   0.001 0.00119  0.0017  0.967
## Residuals   422 293.433 0.69534               
## 
##  Response NSI_Q3 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   1.05 1.04782   1.271 0.2602
## Residuals   422 347.89 0.82439               
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value  Pr(>F)   
## I             1   8.97  8.9700  7.4112 0.00675 **
## Residuals   422 510.76  1.2103                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response NSI_Q5 :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   0.881 0.88075  1.2683 0.2607
## Residuals   422 293.060 0.69446               
## 
##  Response NSI_Q6 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   0.01 0.01153  0.0109 0.9168
## Residuals   422 445.34 1.05530               
## 
##  Response PCLM_Tot_Score :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1    477   476.6  1.7281 0.1894
## Residuals   422 116387   275.8               
## 
##  Response PHQ9_Tot_Score :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    78.4  78.440  2.0964 0.1484
## Residuals   422 15790.0  37.417               
## 
##  Response P :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    33.4  33.397  0.9489 0.3306
## Residuals   422 14852.0  35.194               
## 
##  Response Fu :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1   119.3  119.30  2.2129 0.1376
## Residuals   422 22750.2   53.91               
## 
## 473 observations deleted due to missingness
mnv<-manova(cbind(NSI_Q2,NSI_Q4,SOT,LOC)~I,data=dhi)
summary(mnv)
##            Df   Pillai approx F num Df den Df Pr(>F)
## I           1 0.012669   1.8253      4    569 0.1224
## Residuals 572
summary.aov(mnv)
##  Response NSI_Q2 :
##              Df Sum Sq Mean Sq F value Pr(>F)
## I             1   0.04 0.03513   0.044 0.8339
## Residuals   572 456.46 0.79801               
## 
##  Response NSI_Q4 :
##              Df Sum Sq Mean Sq F value  Pr(>F)  
## I             1   4.98  4.9829    3.82 0.05113 .
## Residuals   572 746.12  1.3044                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response SOT :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    65.2  65.237  1.5957  0.207
## Residuals   572 23385.4  40.884               
## 
##  Response LOC :
##              Df  Sum Sq Mean Sq F value Pr(>F)
## I             1    0.42 0.41928  0.2377  0.626
## Residuals   572 1008.86 1.76374               
## 
## 323 observations deleted due to missingness

Medications

## [1] 177
## [1] 179
## [1] 280
##     
##        0   1   2   3   4   5   6   7   8   9  11  13
##      138 113 105  71  51  39  20  11   4   2   1   0
##   am  28  37  40  26  16  14   6   3   0   1   0   1
##     
##        0   1   2   3   4   5   6   7   8   9  11  13
##      140 115 107  72  46  36  20   9   3   2   1   0
##   pm  26  35  38  25  21  17   6   5   1   1   0   1
##      
##         0   1   2   3   4   5   6   7   8   9  11  13
##       120  92  83  56  41  28  18   9   3   2   1   0
##   pam  46  58  62  41  26  25   8   5   1   1   0   1

Comments/Questions:

Prior Percentage of patients with central dysfunction Particular test thats significant of central signs <Explore individuals signs - those with our cutoff score Control for Medications - subset data with AM/PM <Significance of either